package alarmdisplay;

//import global.IO;

import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class JSON2txt {

	/**
	 * @param args
	 */


	/*****
	 * Wandelt ein OpenStreepmap JSON Objekt in eine Liste<String> um.
	 * Ausgegeben werden die Straßenbezeichnungen [route -> leg -> maneuvers ->
	 * narrative]<br>
	 * sowie die Strecke [route -> leg -> maneuvers -> distance ]<br>
	 * Das Ausgabeformat ist 'Wegbeschreibung xxx.xx km'<br>
	 * Liegt ein Fehler vor, so wird der Stacktrace auf die Konsole geschrieben
	 * und eine leere Liste zurückgegeben
	 * 
	 * 
	 * @param json
	 * @return
	 */
	public List<String> getStringsFromField(String json) {
		String json_clean = json.replaceAll("^[^\\{]+", "").replaceAll("\\);$", "");

		List<String> narrativeList = new ArrayList<String>();
		JSONParser parser = new JSONParser();
		String wayString;

		try {
			JSONObject jsonObject = (JSONObject) parser.parse(json_clean);
			jsonObject = (JSONObject) parser.parse(jsonObject.get("route").toString());

			JSONArray jsonArray = (JSONArray) jsonObject.get("legs");

			jsonObject = (JSONObject) parser.parse(jsonArray.get(0).toString());

			jsonArray = (JSONArray) jsonObject.get("maneuvers");

			for (Object eachJson : jsonArray) {
				wayString = "";
				jsonObject = (JSONObject) parser.parse(eachJson.toString());

				wayString += jsonObject.get("narrative").toString().replaceAll("<[^<]+>", "")+"#";
				
				wayString += (Math.round(Float.parseFloat(jsonObject.get("distance").toString()) * 100) / 100.0)
						+ " km";
				narrativeList.add(wayString);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return narrativeList;

	}
}
